﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharePoint2007Migration.Managers;
using System.Xml;
using System.IO;

namespace SharePoint2007Migration.Domain
{
    public class BaseDataObject
    {
        public override string ToString()
        {
            return ReflectionManager.DisplayObjectProperties(this);
        }

        protected string TryFormatXml(string sUnformattedXml)
        {
            try
            {

                //http://www.codeproject.com/KB/cpp/FormattingXML.aspx

                //load unformatted xml into a dom
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(sUnformattedXml);
                //will hold formatted xml
                StringBuilder sb = new StringBuilder();
                //pumps the formatted xml into the StringBuilder above
                StringWriter sw = new StringWriter(sb);
                //does the formatting
                XmlTextWriter xtw = null;

                try
                {
                    //point the xtw at the StringWriter
                    xtw = new XmlTextWriter(sw);
                    //we want the output formatted
                    xtw.Formatting = Formatting.Indented;
                    //get the dom to dump its contents into the xtw 
                    xd.WriteTo(xtw);
                }
                finally
                {
                    //clean up even if error
                    if (xtw != null)
                        xtw.Close();
                }
                //return the formatted xml
                return sb.ToString();
            }
            catch (Exception)
            {
                return sUnformattedXml;
            }
        }
    }
}
